// Author: Domien Nowicki

#ifndef RENDERER_H
#define RENDERER_H

#include "Pixel.h"
#include "Vector.h"
#include "Poly.h"

// Abstract class for a renderer
class Renderer
{
public:
    Renderer();
    virtual ~Renderer();

	virtual void SetPixel(unsigned int x, unsigned int y, const Pixel& pixel) = 0;
	virtual Pixel GetPixel(unsigned int x, unsigned int y) const = 0;
	virtual unsigned int GetHeight() const = 0;
	virtual unsigned int GetWidth() const = 0;
	virtual void Update() = 0;
	virtual void DrawPolygon(const Poly& poly) = 0;
	virtual void Render();
};

#endif // RENDERER_H
